Template Filters এবং Custom Filters

Web Development - জ্যাঙ্গো (Django) - Django এর টেমপ্লেট সিস্টেম
247

Django টেমপ্লেট সিস্টেমে Template Filters এমন ফাংশন যা টেমপ্লেটের মধ্যে ডাটা প্রদর্শন করার সময় আউটপুট পরিবর্তন বা ফরম্যাট করতে ব্যবহৃত হয়। টেমপ্লেট ফিল্টারগুলি সাধারণত একটি পাইপ | চিহ্নের মাধ্যমে টেমপ্লেটের মধ্যে প্রয়োগ করা হয়। Django অনেক বিল্ট-ইন ফিল্টার প্রদান করে, কিন্তু প্রয়োজনে আপনি Custom Template Filters তৈরি করতে পারেন।


Template Filters

Django-তে Template Filters হল সরল ফাংশন যেগুলি আপনার ডাটা বা ভেরিয়েবলকে নির্দিষ্ট আকারে প্রদর্শন করতে ব্যবহৃত হয়। Django বিভিন্ন প্রকারের বিল্ট-ইন টেমপ্লেট ফিল্টার সরবরাহ করে যা আপনি টেমপ্লেটে ব্যবহার করতে পারেন।

১. কিছু সাধারণ Built-in Template Filters

  • date filter: এটি একটি তারিখ বা সময় ফরম্যাট করার জন্য ব্যবহৃত হয়।

    উদাহরণ:

    {{ post.date_published|date:"F j, Y" }}
    

    এখানে date ফিল্টার তারিখকে Month Day, Year ফরম্যাটে প্রদর্শন করবে। যেমন: October 5, 2024

  • lower filter: এটি একটি স্ট্রিংকে ছোট অক্ষরে পরিণত করে।

    উদাহরণ:

    {{ user.name|lower }}
    

    যদি user.name "John" হয়, তাহলে এটি "john" প্রদর্শন করবে।

  • default filter: এটি কোনো ভেরিয়েবল যদি None বা False হয়, তবে ডিফল্ট মান প্রদান করে।

    উদাহরণ:

    {{ user.profile_picture|default:"/static/images/default.jpg" }}
    

    যদি user.profile_picture null বা None হয়, তবে /static/images/default.jpg চিত্র প্রদর্শিত হবে।

  • length filter: এটি একটি লিস্ট বা স্ট্রিং-এর দৈর্ঘ্য প্রদান করে।

    উদাহরণ:

    {{ my_list|length }}
    

    এটি my_list-এর উপাদানের সংখ্যা প্রদর্শন করবে।

  • join filter: এটি একটি তালিকার উপাদানগুলো একটি নির্দিষ্ট স্ট্রিং দিয়ে যোগ করে।

    উদাহরণ:

    {{ my_list|join:", " }}
    

    এটি তালিকার উপাদানগুলো কমা দিয়ে যোগ করবে, যেমন: item1, item2, item3

২. ফিল্টার ব্যবহারের উদাহরণ

ধরা যাক, আপনি একটি ব্লগ পোস্টের তৈরি তারিখ এবং পোস্টের বিষয়বস্তু প্রদর্শন করতে চান। তাহলে আপনি নিম্নলিখিতভাবে টেমপ্লেট লিখতে পারেন:

<p>Post published on: {{ post.date_published|date:"F j, Y" }}</p>
<p>{{ post.content|truncatewords:30 }}</p>

এখানে:

  • date ফিল্টার তারিখকে উপযুক্ত ফরম্যাটে প্রদর্শন করবে।
  • truncatewords ফিল্টার পোস্টের কনটেন্টকে ৩০ শব্দে সংকুচিত করবে।

Custom Template Filters

Django-তে আপনি Custom Template Filters তৈরি করতে পারেন যেগুলি আপনার প্রয়োজন অনুযায়ী ডেটা পরিবর্তন করবে। এটি করার জন্য আপনাকে একটি custom filters module তৈরি করতে হবে এবং সেখানে একটি ফিল্টার ফাংশন ডিফাইন করতে হবে।

১. Custom Filter তৈরি করা

ধরা যাক, আপনি একটি ফিল্টার তৈরি করতে চান যা একটি স্ট্রিং-এর প্রথম অক্ষরকে বড় করে দিবে।

  1. প্রথমে আপনার অ্যাপের templatetags ফোল্ডারে একটি Python ফাইল তৈরি করুন, যেমন custom_filters.py
  2. সেখানে একটি ফিল্টার ফাংশন লিখুন:
# templatetags/custom_filters.py
from django import template

register = template.Library()

@register.filter(name='capitalize_first')
def capitalize_first(value):
    if isinstance(value, str):
        return value.capitalize()
    return value

এখানে:

  • register.filter ডেকোরেটরটি এই ফাংশনটিকে একটি টেমপ্লেট ফিল্টার হিসেবে নিবন্ধন করবে।
  • capitalize_first ফিল্টারটি স্ট্রিংয়ের প্রথম অক্ষর বড় করবে।

২. Custom Filter ব্যবহার করা

এখন, টেমপ্লেট ফাইলে এই ফিল্টার ব্যবহার করতে হলে আপনাকে প্রথমে {% load %} ট্যাগ দিয়ে ফিল্টারটি লোড করতে হবে:

{% load custom_filters %}

<p>{{ user.name|capitalize_first }}</p>

এখানে, যদি user.name হয় "john", তাহলে এটি "John" প্রদর্শন করবে।

৩. Complex Custom Filter উদাহরণ

ধরা যাক, আপনি একটি ফিল্টার তৈরি করতে চান যা একটি লিস্টের সব স্ট্রিংয়ের প্রথম অক্ষর বড় করবে।

# templatetags/custom_filters.py
from django import template

register = template.Library()

@register.filter(name='capitalize_all')
def capitalize_all(value):
    if isinstance(value, list):
        return [item.capitalize() for item in value if isinstance(item, str)]
    return value

এখানে:

  • যদি value একটি লিস্ট হয়, তবে এটি প্রতিটি স্ট্রিংয়ের প্রথম অক্ষর বড় করে দেবে।

৪. Custom Filter ব্যবহার করা

{% load custom_filters %}

<ul>
    {% for item in my_list %}
        <li>{{ item|capitalize_all }}</li>
    {% endfor %}
</ul>

এটি লিস্টের সমস্ত স্ট্রিংয়ের প্রথম অক্ষর বড় করে প্রদর্শন করবে।


সারাংশ

  • Template Filters Django-তে ডাটা প্রক্রিয়া করার একটি শক্তিশালী টুল। Django অনেক বিল্ট-ইন ফিল্টার প্রদান করে, যেমন date, lower, length ইত্যাদি।
  • Custom Filters তৈরি করা যায় যদি আপনার প্রোজেক্টের জন্য কাস্টম ফিল্টার প্রয়োজন হয়। আপনি আপনার নিজস্ব কাস্টম ফিল্টার তৈরি করতে templatetags মডিউল ব্যবহার করে।
  • Custom Filters তৈরি করার জন্য register.filter ডেকোরেটর ব্যবহার করা হয়, এবং আপনি এই ফিল্টারগুলি টেমপ্লেটে {% load %} ট্যাগ দিয়ে লোড করতে পারেন।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...